var API = require("../config/api.js");

//数据转化
function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}
 
/**
 * 时间戳转化为年 月 日 时 分 秒
 * number: 传入时间戳
 * format：返回格式，支持自定义，但参数必须与formateArr里保持一致
*/
function formatTime(number,format) {
 
  var formateArr  = ['Y','M','D','h','m','s'];
  var returnArr   = [];
 
  var date = new Date(number * 1000);
  returnArr.push(date.getFullYear());
  returnArr.push(formatNumber(date.getMonth() + 1));
  returnArr.push(formatNumber(date.getDate()));
 
  returnArr.push(formatNumber(date.getHours()));
  returnArr.push(formatNumber(date.getMinutes()));
  returnArr.push(formatNumber(date.getSeconds()));
 
  for (var i in returnArr)
  {
    format = format.replace(formateArr[i], returnArr[i]);
  }
  return format;
}


// const formatTime = date => {
//   const year = date.getFullYear()
//   const month = date.getMonth() + 1
//   const day = date.getDate()
//   const hour = date.getHours()
//   const minute = date.getMinutes()
//   const second = date.getSeconds()

//   return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
// }

const showSuccessToast = function (msg, callback) {
  wx.showToast({
    icon: "success",
    duration: 3000,
    title: msg,
    success: callback
  });
}

const showErrorToast = function(msg) {
  wx.showToast({
    title: msg,
  })
}

const showWarnModel = function(msg) {
  wx.showModal({
    title: "提示",
    content: msg,
    showCancel: false
  });
}

const showSuccessModel = function(msg, path = "") {
  wx.showModal({
    title: "成功",
    content: msg,
    showCancel: false,
    success: function () {
      if (path.length > 0) {
        wx.redirectTo({url: path});
      }
    }
  });
}

const handleWhenInvalid = function (data) {
  UTILS.showErrorToast(data.state.msg);
}

const handleWhenFail = function (data) {
  UTILS.showErrorToast(data.state.msg);
}

/**
 * 通用GET请求
 * @param {*} url 请求地址
 * @param {*} header 请求头部信息
 * @param {*} ok 请求成功回调
 * @param {*} invalid 请求参数不合法回调
 * @param {*} fail 请求失败回调
 */
const httpGet = function (url, header, ok, invalid = handleWhenInvalid, fail = handleWhenFail) {
  wx.request({
    url: url,
    method: 'GET',
    header: header,
    success: function(res){
      var data = res.data;
      if (data.state.code === API.OK) {
        ok(data);
      } else if (data.state.code === API.INVALID) {
        invalid(data);
      } else if (data.state.code === API.FAIL) {
        fail(data);
      }
    },
    fail: function() {},
    complete: function() {}
  });
}

const httpPost = function (url, header = {}, requestParam = {}, ok, invalid = handleWhenInvalid, fail = handleWhenFail) {
  wx.request({
    url: url,
    method: 'POST',
    header: header,
    data: requestParam,
    success: function(res){
      var data = res.data;
      if (data.state.code === API.OK) {
        ok(data);
      } else if (data.state.code === API.INVALID) {
        invalid(data);
      } else if (data.state.code === API.FAIL) {
        fail(data);
      }
    },
    fail: function() {
      
    },
    complete: function() {
      
    }
  });
}

module.exports = {
  formatTime: formatTime,
  showSuccessToast: showSuccessToast,
  showErrorToast: showErrorToast,
  showWarnModel: showWarnModel,
  showSuccessModel: showSuccessModel,
  httpGet: httpGet,
  httpPost: httpPost,
  USER_INFO: "userInfo",
  TOKEN: "token",
  CHECKED: 1,
  UNCHECKED: 0,
  ORDER_NOPAY: 0,
  ORDER_PAY: 5,
  ORDER_WAIT: 10,
  ORDER_FINISH: 20
}
